When a computer system is booted, a CPU executes a basis input/output system (BIOS) program stored in an external memory to complete a boot process. The external memory is generally a non-volatile memory. The BIOS program is very basic software program code on a hardware system of a motherboard, and has main functions including, for example, Power-On Self-Test (POST) of the computer system, initialization action, provision of basic set value of elements, and provision of resident program library.
FIG. 1 is a block diagram of a typical computer system 10 having a BIOS program. Referring to FIG. 1, the computer system 10 includes a CPU 12, a chip set 14, and a non-volatile memory 16. The chip set 14 includes a north bridge chip 142 and a south bridge chip 144. The chip set 14 mainly acts as a bridge for communication between the CPU 12 and other peripheral members, and the non-volatile memory 16 is used to store the BIOS program of the computer system 10.
FIG. 2 shows contents of a typical BIOS program. Referring to FIG. 2, the BIOS program 20 includes a booting area 22 and a program area 24. The program area 24 is used to store a BIOS image file, including BIOS program code.
In operation, when a user enables a power switch of the computer system 10, the CPU 12 executes the program code in the booting area 22 first. Before the execution of the BIOS, the system verifies whether other parts of the BIOS are normal with a checksum function. After the check of the booting area 22 is completed successfully, the CPU 12 executes the program code in the program area 24 so as to perform POST, thereby determining whether hardware members such as a memory controller, a keyboard controller, a communication controller, a software controller, and a hardware controller are functioning normally. In this stage, BIOS also initializes basic hardware, such as memory, video card, and motherboard chip set. After the execution of the BIOS program, the computer system 10 is successfully booted, and an Operating System (OS) may be enabled.
As computer software and hardware technology are developing rapidly at present, in order to further improve the compatibility and performance of computer systems, it is necessary to update the BIOS program frequently. In conventional updates of the BIOS program, if the update fails, the computer system can only be booted in the booting area. However, the capacity of the booting area is limited, and thus only specific devices on the computer system are initialized. A user needs to reload an update program or the BIOS image file from a floppy disk driver or an optical disk driver, so as to re-record the BIOS image file to an external memory, which consumes a significant amount of time.
In addition, in conventional update methods, the update program and the BIOS image file can be duplicated into a program area of a non-volatile memory after loading into the OS. Because the computer system generally needs to simultaneously execute multiple application programs in the OS, the BIOS update action may be interfered with by other application programs, and thus the update may fail. In addition, in the process of updating the BIOS, data damage may be caused by failed update due to powering off, such that the computer system cannot be booted. In these cases, the computer system must be delivered back to the manufacturer for repair of the BIOS program, thus incurring extensive loss of time and cost to the user.
Therefore, it is desirable to provide an improved update method of the BIOS program, so as to solve the above problems.